1. Technical Field
The invention is related to document navigation, and in particular, to a technique for providing a plurality of dynamic real-time graphical representations of documents for selection and navigation of those documents.
2. Related Art
Users accessing documents, such as a large text document or an application source code file, typically spend a large fraction of their time navigating around the document looking for particular parts of the document. In general, such navigation is accomplished using any of several different techniques. Examples of these navigation techniques include: opening, switching between, and scrolling within tabbed documents; clicking on (selecting) items or documents in hierarchical overviews; clicking on source code entities (e.g., hyperlinks to entity definitions); and issuing textual queries or structural queries (find instances, find definitions, find callers, find all references, etc.), then jumping to the query results.
Navigation time problems have been observed in a number of software productivity studies. For example, in one study involving software developers modifying a 500-line computer program, the software developers spent an average of 35% of their task time navigating the source code, looking for particular elements of that code to modify. A similar study involving modification of a 3000-line computer program found that time spent in navigating the code played a large role in the participants' poor task completion rates. In both studies, experienced programmers had difficulty navigating around programs of very modest size. It is expected that this type of navigation problem will consume greater amounts of time as the size of the document increases, and as multiple related or unrelated documents are navigated.
One reason why conventional document navigation techniques are inefficient is that typical user interface (UI) mechanisms require some knowledge of symbol or file names. For example, to open a file requires knowing its name; to click on a computer program method in a class overview requires knowing the name of the method, its containing class and the class's containing namespace; to find an object using a search requires knowing the name of the sought object or a nearby object. The number of symbols in even a modest computer program can quickly overwhelm a developer's working memory, causing confusion and false navigation steps.